package com.boyan.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import io.jsonwebtoken.security.Keys;


import java.util.Date;
import java.util.Map;

/**
 * @author Boyan
 */
public class JwtUtils {

    private static final String SECRET_KEY ="ByWoAiNiByWoAiNiByWoAiNiByWoAiNi";
    //  2小时jwt过期
    private static final long EXPIRATION_TIME = 2*60*60*1000;

    /**
     * 生成token
     * @param claims
     * @return
     */
    public static String generateToken(Map<String, Object> claims) {
        return Jwts.builder()
                .signWith(Keys.hmacShaKeyFor(SECRET_KEY.getBytes())) // 自动推断算法类型
                .claims(claims) // 新版使用claims()代替addClaims()
                .expiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .compact();
    }

    /**
     * 解析token
     * @param token
     * @return
     */
    public static Claims parseToken(String token) {
        return Jwts.parser()
                .verifyWith(Keys.hmacShaKeyFor(SECRET_KEY.getBytes())) // 新版推荐使用verifyWith
                .build()
                .parseSignedClaims(token)
                .getPayload();
    }

}
